home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BMUG Revelations
/
BMUG Revelations.toast
/
Programming
/
Programming Languages
/
Yerk 3.64
/
Module source
/
Print
< prev
next >
Wrap
Text File
|
1990-12-22
|
2KB
|
99 lines
\ print -- Printer support
\ 10/10/84 rw Version 1
\ 11/22/84 cbd Added vectors for system printing
\ 12/19/84 ssg Moved selectors; added formfeed;
\ Added echovec stuff to +print, -print.
\ 12/31/84 ssg Converted to module.
\ 2/13/85 cbd subclass of PBDrvr instead of File
\ 12/19/85 cdn Renamed ff to np (new page), to avoid conflict with $ ff
\ 6/27/86 cdn Improved error message for Reset failure
Decimal
:Module printMod
// drvr
SCON PRNAME ".Print"
:CLASS PrintFcb <Super PBDrvr
\ ( -- )
:M PINIT:
prname name: self
-3 put: IORefNum
;M
\ ( -- )
:M RESET:
7 put: csCode
0 put: IOBuffer
1 put: csp1 0 put: csp2
addr: header fcall PBControl
abort" Reset Failed; Printer Driver may be missing from disk "
;M
:M FF:
7 put: csCode
0 put: IOBuffer
2 put: csp1 0 put: csp2
addr: header fcall PBControl
abort" FF failed "
;M
:M LF:
7 put: csCode
0 put: IOBuffer
3 put: csp1 0 put: csp2
addr: header fcall PBControl
abort" LF failed "
;M
\ ( -- )
:M OPEN:
pinit: self open: super reset: self
abort" Can't open printer"
;M
\ ( addr len -- )
:M PRINT:
5 put: csCode
put: IOBuffer
+base addr: header 28 + !
addr: header fcall PBControl
abort" Print Failed "
;M
\ ( char -- )
:M PEMIT:
pad c! pad 1 print: self
;M
\ ( -- )
:M CLOSE:
ff: self close: super
abort" Can't close printer "
;M
;CLASS
printFcb Printer
: pinit open: printer ;
: pemit pemit: printer ;
: ptype print: printer ;
: pcr lf: printer $ 0a ( ASCII linefeed ) pemit ;
\ previously named "ff"; changed to avoid collision with hex # ff
: np ff: printer ;
\ ( c -- ) echo to printer AND screen.
: echo dup emitvec pemitvec ;
\ enable simultaneous printing of Yerk screen text
: +print
open: printer 'c pemit -> pemitvec 'c echo -> echovec
'c ptype -> ptypevec 'c pcr -> pcrvec ;
: -print 0 -> pemitvec 0 -> echovec 0 -> ptypevec 0 -> pcrvec ;
;Module